#pragma once

// Base header for calculating geometry object's area

#include <utils/config.h>
#include <utils/Concepts.h>

namespace solar
{
    template <typename T>
    auto area(T* /*unused*/, bool lazy = true) -> double
    {
        static_assert(false, "Don't use this generic **unimplemented** version, include the "
                             "corresponding header for detailed implementation");
    }

    template <ClassWithArea T>
    auto area(T* ptr, bool lazy = true) -> double
    {
        return ptr->area();
    }
}
